Hint: each paragraph has To the top hyperlink

Navigation

In [1]:
from visuals import *

Time sampling analysis

To the top
Time sampling statistics don't have crucial differencies in different conditions due to the experiments.

Devices used: Honor 10, Oneplus 6

Cases: with/without background processes, with/without movements.

A lot of zeroed periods are observed. We can reduce it by setting sensor rates to common fixed value (100hz in SensorKinetics)

Overall statistics

To the top

In [2]:
data_dir = './data/'
games = get_games(data_dir)
print(games)
['Dormitory_f_161_47_37_', 'Dormitory_f_165_64_38_', 'Dormitory_f_158_54_36_']
In [3]:
plot_time_sampling_stats(data_dir, games)

Sensors' data while no action

To the top

Honor10

In [4]:
data_dir = './minor_data/honor10/no_action/'
files = os.listdir(data_dir)
games = list(set([file[:-8] for file in files]))
In [5]:
plot_time_sampling_stats(data_dir, games)

Oneplus6

In [6]:
data_dir = './minor_data/oneplus6/no_action/'
files = os.listdir(data_dir)
games = list(set([file[:-8] for file in files]))
In [7]:
plot_time_sampling_stats(data_dir, games, delimiter=';', decimal=',')

Data without background processes

To the top Checked on Oneplus 6.

There are two plots for different sensor rates.

In [8]:
data_dir = './minor_data/oneplus6/no_backproc/'
files = os.listdir(data_dir)
games = list(set([file[:-8] for file in files]))
In [9]:
games
Out[9]:
['no_backproc_100rate_', 'no_backproc_fastest_']

Fixed common rate (100hz):

In [10]:
plot_time_sampling_stats(data_dir, [games[0]], delimiter=';', decimal=',')

Fastest rate for each sensor:

In [11]:
plot_time_sampling_stats(data_dir, [games[1]], delimiter=';', decimal=',')

Collected data analysis

To the top

In [12]:
data_dir = './minor_data/steps_ladder/'
files = os.listdir(data_dir)
games = list(set([file[:-8] for file in files]))
In [32]:
games
Out[32]:
['steps_ladder_m_190_75_43_',
 'steps_ladder_f_165_57_37_',
 'steps_ladder_m_181_82_44_']
In [33]:
plot_game(data_dir, games[0], ['accm', 'lacm'])

There are 4 activity frames (steps_ladder_m_190_75_43 game):

Activity Frame accm Frame lacm
Around the room [1100:6500] [450:3350]
Upstairs (10 + 9 stairs) [8100:12500] [4000:4980] && [5350:6300]
Around the room [14000:17600] [7000:8800]
Downstairs (9 + 10 stairs) [18800:23500] [9400:10500] && [10850:12000]
In [34]:
data = pd.read_csv(data_dir + games[0] + 'lacm.csv', delimiter=',', decimal='.')


x_acc = (data['X_value'].values).reshape([-1, 1])
In [35]:
track1, basis1 = phase_track(x_acc[450:3550], 600, 2, plot_correlation_matrix=True)
track2, basis2 = phase_track(x_acc[4000:6300], 600, 2, plot_correlation_matrix=True)
track3, basis3 = phase_track(x_acc[7000:8800], 600, 2, plot_correlation_matrix=True)
track4, basis4 = phase_track(x_acc[9400:12000], 600, 2, plot_correlation_matrix=True)

# track1, basis1 = phase_track(x_acc[1100:6500], 600, 2)
# track2, basis2 = phase_track(x_acc[8100:12500], 600, 2)
# track3, basis3 = phase_track(x_acc[14000:17600], 600, 2)
# track4, basis4 = phase_track(x_acc[18800:23500], 600, 2)
Explained variation for 2 principal components: [0.45817635 0.41243972]
Cumulative explained variationfor 2 principal components: 0.8706160634041858

Explained variation for 2 principal components: [0.32468232 0.28980012]
Cumulative explained variationfor 2 principal components: 0.6144824407993655

Explained variation for 2 principal components: [0.4132874  0.40560059]
Cumulative explained variationfor 2 principal components: 0.8188879890066363

Explained variation for 2 principal components: [0.30868717 0.27574201]
Cumulative explained variationfor 2 principal components: 0.5844291781864441

In [36]:
plot_phase_track(track1)
In [37]:
plot_phase_track(track2)
In [38]:
plot_phase_track(track3)
In [39]:
plot_phase_track(track4)

Sum of squares

In [40]:
all_acc = data['X_value'].values**2 + data['Y_value'].values**2 + data['Z_value'].values**2
all_acc = all_acc.reshape([-1, 1])
In [41]:
data['all'] = all_acc
In [42]:
fig = go.Figure()
fig.add_scatter(x = data['time'], y = data['all'], mode='lines', name='Sum squares')
# fig.add_scatter(x = data['time'], y = data['Y_value'], mode='lines', name='Y_value')
# fig.add_scatter(x = data['time'], y = data['Z_value'], mode='lines', name='Z_value')

fig.for_each_trace(
    lambda trace: trace.update(name=trace.name.replace("_value", "")),
)

fig.layout.template = 'plotly_white'

fig.show()
In [43]:
all_acc.shape
Out[43]:
(12268, 1)
In [44]:
track1, basis1 = phase_track(all_acc[450:3550], 600, 2)
track2, basis2 = phase_track(all_acc[4000:6300], 600, 2)
track3, basis3 = phase_track(all_acc[7000:8800], 600, 2)
track4, basis4 = phase_track(all_acc[9400:12000], 600, 2)
Explained variation for 2 principal components: [0.29782058 0.29220452]
Cumulative explained variationfor 2 principal components: 0.59002510174691

Explained variation for 2 principal components: [0.17653327 0.17362334]
Cumulative explained variationfor 2 principal components: 0.35015660856732916

Explained variation for 2 principal components: [0.25331342 0.24288052]
Cumulative explained variationfor 2 principal components: 0.49619394102043163

Explained variation for 2 principal components: [0.09934374 0.09717542]
Cumulative explained variationfor 2 principal components: 0.19651916315909437

In [45]:
plot_phase_track(track2)
In [46]:
track1, basis1 = phase_track(x_acc[450:3550], 600, 3)
track2, basis2 = phase_track(x_acc[4000:6300], 600, 3)
track3, basis3 = phase_track(x_acc[7000:8800], 600, 3)
track4, basis4 = phase_track(x_acc[9400:12000], 600, 3)

# track1, basis1 = phase_track(x_acc[1100:6500], 600, 2)
# track2, basis2 = phase_track(x_acc[8100:12500], 600, 2)
# track3, basis3 = phase_track(x_acc[14000:17600], 600, 2)
# track4, basis4 = phase_track(x_acc[18800:23500], 600, 2)
Explained variation for 3 principal components: [0.45817635 0.41243972 0.01113299]
Cumulative explained variationfor 3 principal components: 0.8817490573846372

Explained variation for 3 principal components: [0.32468232 0.28980012 0.08572513]
Cumulative explained variationfor 3 principal components: 0.7002075688418374

Explained variation for 3 principal components: [0.4132874  0.40560059 0.0197261 ]
Cumulative explained variationfor 3 principal components: 0.8386140926408472

Explained variation for 3 principal components: [0.30868717 0.27574201 0.12854154]
Cumulative explained variationfor 3 principal components: 0.7129707141780134

In [47]:
plot_phase_track(track1)
In [48]:
plot_phase_track(track2)
In [49]:
plot_phase_track(track3)
In [50]:
plot_phase_track(track4)